今天要來介紹關於瀏覽器是怎麼將程式轉換為網頁內容。
瀏覽器在將 HTML、CSS、JavaScript 轉換為我們目前看到的網頁內容,並顯示在螢幕上。這樣的過程稱為 渲染流水線 ,以下為渲染步驟:
構建 DOM樹 :
HTML 文檔DOM (文檔對象模型)的樹狀結構
構建 CSSOM樹 :
CSS 文件CSSOM (CSS對象模型)的樹狀結構
合併 DOM 和 CSSOM :瀏覽器將 DOM樹 和 CSSOM樹 合併成一個結構。
渲染樹 (Render Tree)
佈局(Layout) :瀏覽器根據 渲染樹 計算每個元素在頁面上的位置和大小。
繪製(Painting) :根據計算的位置和大小,瀏覽器開始繪製每個元素。
合成(Compositing) :瀏覽器將所有繪製的元素組合在一起,建立我們所看見的畫面。
圖層(layers) 的概念來加速這一過程,這樣在動畫和滾動等情況下可以更高效地進行合成。重排(Reflow) 和 重繪(Repaint) :如果某個元素的樣式發生變化,瀏覽器將需要重新執行
重排(Reflow) :重新執行 佈局(Layout) ,重新渲染的步驟為:
重繪(Repaint) :重新執行 繪製(Painting) ,重新渲染的步驟為:
因為渲染的順序(佈局 -> 繪製 -> 合成)是固定的,因此我們可以歸納出, 重排必定重繪,但重繪不會重排 。